<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>《图解HTTP》读书笔记 | lty的博客</title>
    <meta name="generator" content="VuePress 1.8.2">
    <link rel="icon" href="/blog/favicon.ico">
    <meta name="description" content="山重水复疑无路，柳暗花明又一村">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    
    <link rel="preload" href="/blog/assets/css/0.styles.ca934e57.css" as="style"><link rel="preload" href="/blog/assets/js/app.2c497286.js" as="script"><link rel="preload" href="/blog/assets/js/3.1e41fb2d.js" as="script"><link rel="preload" href="/blog/assets/js/1.a1bf8e1e.js" as="script"><link rel="preload" href="/blog/assets/js/26.1881faa9.js" as="script"><link rel="prefetch" href="/blog/assets/js/10.595db545.js"><link rel="prefetch" href="/blog/assets/js/11.a57c5d33.js"><link rel="prefetch" href="/blog/assets/js/12.bbd60eab.js"><link rel="prefetch" href="/blog/assets/js/13.0a322639.js"><link rel="prefetch" href="/blog/assets/js/14.45182424.js"><link rel="prefetch" href="/blog/assets/js/15.8bfecd82.js"><link rel="prefetch" href="/blog/assets/js/16.f295f32f.js"><link rel="prefetch" href="/blog/assets/js/17.de5dabe7.js"><link rel="prefetch" href="/blog/assets/js/18.dbcf4366.js"><link rel="prefetch" href="/blog/assets/js/19.dc4ed650.js"><link rel="prefetch" href="/blog/assets/js/20.9000ffe3.js"><link rel="prefetch" href="/blog/assets/js/21.50c08d3d.js"><link rel="prefetch" href="/blog/assets/js/22.849f004a.js"><link rel="prefetch" href="/blog/assets/js/23.4c25a240.js"><link rel="prefetch" href="/blog/assets/js/24.a2930e6d.js"><link rel="prefetch" href="/blog/assets/js/25.20efd6e6.js"><link rel="prefetch" href="/blog/assets/js/27.18bc2dfe.js"><link rel="prefetch" href="/blog/assets/js/28.903117fb.js"><link rel="prefetch" href="/blog/assets/js/29.e1d01502.js"><link rel="prefetch" href="/blog/assets/js/30.27049c11.js"><link rel="prefetch" href="/blog/assets/js/31.455cb7a6.js"><link rel="prefetch" href="/blog/assets/js/32.72aa7ec8.js"><link rel="prefetch" href="/blog/assets/js/33.6362e43e.js"><link rel="prefetch" href="/blog/assets/js/34.30160844.js"><link rel="prefetch" href="/blog/assets/js/35.991fefa1.js"><link rel="prefetch" href="/blog/assets/js/36.3350110b.js"><link rel="prefetch" href="/blog/assets/js/37.38b67684.js"><link rel="prefetch" href="/blog/assets/js/38.33876f62.js"><link rel="prefetch" href="/blog/assets/js/4.870f2524.js"><link rel="prefetch" href="/blog/assets/js/5.516ed845.js"><link rel="prefetch" href="/blog/assets/js/6.710883e3.js"><link rel="prefetch" href="/blog/assets/js/7.3579268a.js"><link rel="prefetch" href="/blog/assets/js/8.1e580575.js"><link rel="prefetch" href="/blog/assets/js/9.08e245bf.js">
    <link rel="stylesheet" href="/blog/assets/css/0.styles.ca934e57.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar" data-v-1aefc0b4><div data-v-1aefc0b4><div id="loader-wrapper" class="loading-wrapper" data-v-d48f4d20 data-v-1aefc0b4 data-v-1aefc0b4><div class="loader-main" data-v-d48f4d20><div data-v-d48f4d20></div><div data-v-d48f4d20></div><div data-v-d48f4d20></div><div data-v-d48f4d20></div></div> <!----> <!----></div> <div class="password-shadow password-wrapper-out" style="display:none;" data-v-25ba6db2 data-v-1aefc0b4 data-v-1aefc0b4><h3 class="title" data-v-25ba6db2 data-v-25ba6db2>lty的博客</h3> <p class="description" data-v-25ba6db2 data-v-25ba6db2>山重水复疑无路，柳暗花明又一村</p> <label id="box" class="inputBox" data-v-25ba6db2 data-v-25ba6db2><input type="password" value="" data-v-25ba6db2> <span data-v-25ba6db2>Konck! Knock!</span> <button data-v-25ba6db2>OK</button></label> <div class="footer" data-v-25ba6db2 data-v-25ba6db2><span data-v-25ba6db2><i class="iconfont reco-theme" data-v-25ba6db2></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-25ba6db2>vuePress-theme-reco</a></span> <span data-v-25ba6db2><i class="iconfont reco-copyright" data-v-25ba6db2></i> <a data-v-25ba6db2><span data-v-25ba6db2>lty</span>
            
          <!---->
          2022
        </a></span></div></div> <div class="hide" data-v-1aefc0b4><header class="navbar" data-v-1aefc0b4><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/blog/" class="home-link router-link-active"><img src="/blog/logo.png" alt="lty的博客" class="logo"> <span class="site-name">lty的博客</span></a> <div class="links"><div class="color-picker"><a class="color-button"><i class="iconfont reco-color"></i></a> <div class="color-picker-menu" style="display:none;"><div class="mode-options"><h4 class="title">Choose mode</h4> <ul class="color-mode-options"><li class="dark">dark</li><li class="auto active">auto</li><li class="light">light</li></ul></div></div></div> <div class="search-box"><i class="iconfont reco-search"></i> <input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/blog/" class="nav-link"><i class="iconfont reco-home"></i>
  主页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/categories/JavaScript/" class="nav-link"><i class="undefined"></i>
  JavaScript
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/投资/" class="nav-link"><i class="undefined"></i>
  投资
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/计算机网络/" class="nav-link"><i class="undefined"></i>
  计算机网络
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/前端相关/" class="nav-link"><i class="undefined"></i>
  前端相关
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/知识总结/" class="nav-link"><i class="undefined"></i>
  知识总结
</a></li></ul></div></div><div class="nav-item"><a href="/blog/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/blog/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间线
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-message"></i>
      关于
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://gitee.com/ekzodia_lty" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-mayun"></i>
  Gitee
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav></div></header> <div class="sidebar-mask" data-v-1aefc0b4></div> <aside class="sidebar" data-v-1aefc0b4><div class="personal-info-wrapper" data-v-39576ba9 data-v-1aefc0b4><img src="/blog/avatar.jpg" alt="author-avatar" class="personal-img" data-v-39576ba9> <h3 class="name" data-v-39576ba9>
    lty
  </h3> <div class="num" data-v-39576ba9><div data-v-39576ba9><h3 data-v-39576ba9>27</h3> <h6 data-v-39576ba9>Articles</h6></div> <div data-v-39576ba9><h3 data-v-39576ba9>18</h3> <h6 data-v-39576ba9>Tags</h6></div></div> <ul class="social-links" data-v-39576ba9></ul> <hr data-v-39576ba9></div> <nav class="nav-links"><div class="nav-item"><a href="/blog/" class="nav-link"><i class="iconfont reco-home"></i>
  主页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/categories/JavaScript/" class="nav-link"><i class="undefined"></i>
  JavaScript
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/投资/" class="nav-link"><i class="undefined"></i>
  投资
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/计算机网络/" class="nav-link"><i class="undefined"></i>
  计算机网络
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/前端相关/" class="nav-link"><i class="undefined"></i>
  前端相关
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/知识总结/" class="nav-link"><i class="undefined"></i>
  知识总结
</a></li></ul></div></div><div class="nav-item"><a href="/blog/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/blog/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间线
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-message"></i>
      关于
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://gitee.com/ekzodia_lty" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-mayun"></i>
  Gitee
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav> <!----> </aside> <div class="password-shadow password-wrapper-in" style="display:none;" data-v-25ba6db2 data-v-1aefc0b4><h3 class="title" data-v-25ba6db2 data-v-25ba6db2>《图解HTTP》读书笔记</h3> <!----> <label id="box" class="inputBox" data-v-25ba6db2 data-v-25ba6db2><input type="password" value="" data-v-25ba6db2> <span data-v-25ba6db2>Konck! Knock!</span> <button data-v-25ba6db2>OK</button></label> <div class="footer" data-v-25ba6db2 data-v-25ba6db2><span data-v-25ba6db2><i class="iconfont reco-theme" data-v-25ba6db2></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-25ba6db2>vuePress-theme-reco</a></span> <span data-v-25ba6db2><i class="iconfont reco-copyright" data-v-25ba6db2></i> <a data-v-25ba6db2><span data-v-25ba6db2>lty</span>
            
          <!---->
          2022
        </a></span></div></div> <div data-v-1aefc0b4><main class="page"><section><div class="page-title"><h1 class="title">《图解HTTP》读书笔记</h1> <div data-v-f875f3fc><i class="iconfont reco-account" data-v-f875f3fc><span data-v-f875f3fc>lty</span></i> <i class="iconfont reco-date" data-v-f875f3fc><span data-v-f875f3fc>1/2/2022</span></i> <i class="iconfont reco-eye" data-v-f875f3fc><span id="/blog/blogs/Network/httptj.html" data-flag-title="Your Article Title" class="leancloud-visitors" data-v-f875f3fc><a class="leancloud-visitors-count" style="font-size:.9rem;font-weight:normal;color:#999;"></a></span></i> <i class="tags iconfont reco-tag" data-v-f875f3fc><span class="tag-item" data-v-f875f3fc>网络</span></i></div></div> <div class="theme-reco-content content__default"><h2 id="tcp-ip协议族按层次分为以下四层"><a href="#tcp-ip协议族按层次分为以下四层" class="header-anchor">#</a> TCP/IP协议族按层次分为以下四层</h2> <p><img src="https://gitee.com/ekzodia_lty/blog-image/raw/master/img/20220202214600.png" alt=""></p> <h2 id="确保可靠性的tcp协议"><a href="#确保可靠性的tcp协议" class="header-anchor">#</a> 确保可靠性的TCP协议</h2> <p><strong>按层次分，TCP位于传输层，提供可靠的字节流服务</strong></p> <blockquote><p>所谓字节流服务是指，为了方便传输，将大块的数据分割成以报文段为单位的数据包进行管理。</p></blockquote> <p>为了准确无误将数据送达某处，TCP协议采用了三次握手策略，用TCP协议把数据包送出去后，TCP不会对传送后的情况置之不理，它一定会向对方确认是否成功送达。</p> <h3 id="三次握手"><a href="#三次握手" class="header-anchor">#</a> 三次握手</h3> <p>握手过程中使用了TCP的标志（flag）——SYN（synchronize）和ACK（acknowledgement）</p> <blockquote><p>synchronize 使同步; (使)同步，在时间上一致，同速进行;</p> <p>acknowledgement 确认; 感谢; (对事实、现实、存在的)承认; 谢礼; 收件复函; 致谢，鸣谢;</p></blockquote> <p>发送端首先发送一个带有SYN标志的数据包给对方。接收端收到后，回传带有SYN/ACK标志的数据包以示传达确认信息。最后，发送端再回传一个带有ACK标志的数据包，代表“握手”结束。</p> <p>若在握手过程中某个阶段莫名中断，TCP协议会再次以相同的顺序发送相同的数据包。</p> <p><img src="https://gitee.com/ekzodia_lty/blog-image/raw/master/img/image-20220110234446209.png" alt=""></p> <p>除了三次握手，TCP协议还有其他各种手段来保证通信的可靠性。</p> <h2 id="负责域名解析的dns服务"><a href="#负责域名解析的dns服务" class="header-anchor">#</a> 负责域名解析的DNS服务</h2> <p><strong>DNS服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务</strong>。</p> <p><strong>DNS协议提供通过域名查找IP地址，或逆向从IP地址发查域名的服务。</strong></p> <h2 id="http是不保存状态的协议"><a href="#http是不保存状态的协议" class="header-anchor">#</a> HTTP是不保存状态的协议</h2> <p>HTTP是一种不保存状态，即无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别，协议对于发送过的请求或响应都不做持久化处理，HTTP协议自身不具备保存之前发送过的请求或者响应的功能。</p> <p>HTTP1.1虽然是无状态协议，但是为了实现期望的保持功能，于是引入了Cookie技术。</p> <h2 id="http1-1中可使用的方法"><a href="#http1-1中可使用的方法" class="header-anchor">#</a> HTTP1.1中可使用的方法</h2> <h3 id="get-获取资源"><a href="#get-获取资源" class="header-anchor">#</a> GET：获取资源</h3> <h3 id="post-传输实体主题"><a href="#post-传输实体主题" class="header-anchor">#</a> POST：传输实体主题</h3> <h3 id="put-传输文件"><a href="#put-传输文件" class="header-anchor">#</a> PUT：传输文件</h3> <p>鉴于HTTP/1.1的PUT方法自身不带验证机制，任何人都可以上传文件，存在安全性问题，因此一般的Web网站不使用该方法。</p> <h3 id="head-获得报文首部-获得通信状态"><a href="#head-获得报文首部-获得通信状态" class="header-anchor">#</a> HEAD：获得报文首部（获得通信状态）</h3> <p>HEAD方法和GET方法一样，只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。</p> <h3 id="delete-删除文件"><a href="#delete-删除文件" class="header-anchor">#</a> DELETE：删除文件</h3> <p>与PUT方法一样不带验证机制，所以一般网站也不使用DELETE方法。</p> <h3 id="options-询问支持的方法"><a href="#options-询问支持的方法" class="header-anchor">#</a> OPTIONS：询问支持的方法</h3> <p>OPTIONS方法用来查询针对请求URI指定资源的方法。</p> <h3 id="trace-追踪路径"><a href="#trace-追踪路径" class="header-anchor">#</a> TRACE：追踪路径</h3> <p>TRACE方法是让Web服务器端将之前的请求通信环回给客户的方法。客户端通过TRACE方法可以查询发送出去的请求是怎样被加工/篡改的。但是因为TRACE本来就不常用，再加上它容易引发XST攻击，通常就更不会用到了。</p> <h3 id="connect-要求用隧道协议连接代理"><a href="#connect-要求用隧道协议连接代理" class="header-anchor">#</a> CONNECT：要求用隧道协议连接代理</h3> <p>CONNECT方法要求在与代理服务器通信时建立隧道，实现用隧道协议进行TCP通信。主要使用SSL安全套接层和TLS传输层安全协议把通信内容加密后经网络隧道传输。</p> <p><img src="https://gitee.com/ekzodia_lty/blog-image/raw/master/img/image-20220112230158080.png" alt=""></p> <h2 id="http状态码"><a href="#http状态码" class="header-anchor">#</a> HTTP状态码</h2> <h3 id="状态码的类别"><a href="#状态码的类别" class="header-anchor">#</a> 状态码的类别</h3> <p><img src="https://gitee.com/ekzodia_lty/blog-image/raw/master/img/image-20220115182031227.png" alt=""></p> <h3 id="_2xx-成功"><a href="#_2xx-成功" class="header-anchor">#</a> 2XX 成功</h3> <p>200：客户端发来的请求在服务端被正常处理。</p> <p>204：表示该服务接收的请求已经成功处理，但在返回的响应报文中不含实体的主体部分。一般只在需要从客户端往服务端发送信息，对客户端不需要发送新信息内容的情况下使用。</p> <p>206：表示客户端进行了范围请求，而服务器成功执行了这部分GET请求。</p> <h3 id="_3xx-重定向"><a href="#_3xx-重定向" class="header-anchor">#</a> 3XX 重定向</h3> <blockquote><p>3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。</p></blockquote> <p>301：永久性重定向。该状态码表示请求的资源已经被分配了新的URI，以后应使用资源现在所指的URI。</p> <p>302：临时重定向。该状态码表示请求的资源已经被分配给了新的URI，希望用户本次能够使用新的URI访问。</p> <p>303：该状态码表示由于请求对应的资源存在着另一个URI，应使用GET方法定向获取请求的资源。（明确使用GET方法获得资源，与302有所区别）</p> <p>304：表示客户端发送附带条件的请求时，服务器端允许请求访问资源，但未满足条件的情况。304状态码返回时，不包含任何响应的主体部分。304虽然被划分在3XX当中，但是和重定向没有关系。</p> <p>307：临时重定向。该状态码与302有着相同的意义。</p> <h3 id="_4xx-客户端错误"><a href="#_4xx-客户端错误" class="header-anchor">#</a> 4XX 客户端错误</h3> <p>400：表示请求报文中存在语法错误。当错误发生时，需修改请求的内容后再次发送请求。另外，浏览器回向200 OK一样对待该状态码。</p> <p>401：该状态码发送的请求需要有通过HTTP认证的认证信息。另外若之前已经进行过1次请求，则表示用户认证失败。</p> <p>403：表示对请求资源的访问被服务器拒绝了。未获得文件系统的访问授权、访问权限等情况都可能是发生403的原因。</p> <p>404：表示服务器上无法找到请求的资源。除此之外，也可以在服务端拒绝请求且不想说明理由时使用。</p> <h3 id="_5xx-服务器错误"><a href="#_5xx-服务器错误" class="header-anchor">#</a> 5XX 服务器错误</h3> <p>500：表示服务器在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。</p> <p>503：表示服务器暂时处于超负载或正在进行停机维护，现在无法处理请求。</p> <h2 id="与http协作的web服务器"><a href="#与http协作的web服务器" class="header-anchor">#</a> 与HTTP协作的Web服务器</h2> <p>在互联网上，域名通过DNS服务映射到IP地址（域名解析）之后访问目标网站。</p> <h3 id="通信数据转发程序-代理、网关、隧道"><a href="#通信数据转发程序-代理、网关、隧道" class="header-anchor">#</a> 通信数据转发程序：代理、网关、隧道</h3> <ul><li>代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器。代理不改变请求URI，会直接发送给前方持有资源的目标服务器。</li> <li>网关工作机制与代理十分相似。而网关能使通信线路上的服务器提供非HTTP协议服务。（可以提高通信安全性）</li> <li>隧道可按要求简历起一条与其他服务器连接的线路，使用SSL等手段进行加密。隧道的目的是确保客户端和服务端进行安全的通信。</li></ul> <h2 id="http-1-1首部字段一览"><a href="#http-1-1首部字段一览" class="header-anchor">#</a> HTTP/1.1首部字段一览</h2> <h3 id="通用首部字段"><a href="#通用首部字段" class="header-anchor">#</a> 通用首部字段</h3> <p>指请求报文和响应报文双方都会使用的首部。</p> <p><img src="https://gitee.com/ekzodia_lty/blog-image/raw/master/img/image-20220122135441449.png" alt=""></p> <h3 id="请求首部字段"><a href="#请求首部字段" class="header-anchor">#</a> 请求首部字段</h3> <p><img src="https://gitee.com/ekzodia_lty/blog-image/raw/master/img/image-20220122135453783.png" alt=""></p> <h3 id="响应首部字段"><a href="#响应首部字段" class="header-anchor">#</a> 响应首部字段</h3> <p><img src="https://gitee.com/ekzodia_lty/blog-image/raw/master/img/image-20220122141312126.png" alt=""></p> <h3 id="实体首部字段"><a href="#实体首部字段" class="header-anchor">#</a> 实体首部字段</h3> <p><img src="https://gitee.com/ekzodia_lty/blog-image/raw/master/img/image-20220122141333624.png" alt=""></p> <h2 id="https"><a href="#https" class="header-anchor">#</a> HTTPS</h2> <p>HTTP协议中没有加密机制，但可以通过SSL安全套接层或TLS安全传输协议的组合使用，加密HTTP的通信内容。</p> <p>与SSL组合使用的HTTP被称为HTTPS（HTTP Secure，超文本传输安全协议）或HTTP over SSL。</p> <p><strong>HTTPS也存在一些问题，就是使用SSL的时候，速度会比HTTP慢，SSL的慢分两种，一种是指通信慢。另一种是指由于大量消耗CPU及内存等资源，导致处理速度变慢。</strong></p> <p>不一直使用HTTPS的原因是：加密通信会消耗更多的CPU及内存资源，另一方面是节省购买证书的开销。</p> <h2 id="基于http的功能追加协议"><a href="#基于http的功能追加协议" class="header-anchor">#</a> 基于HTTP的功能追加协议</h2> <h3 id="基于http的协议"><a href="#基于http的协议" class="header-anchor">#</a> 基于HTTP的协议</h3> <p>HTTP功能上的不足可以创建一套全新的协议来补充。可是目前基于
HTTP的Web浏览器的使用环境已经遍布全球，因此无法完全抛弃HTTP。</p> <p><strong>HTTP标准的瓶颈：</strong></p> <ul><li>一条连接上只可发送一个请求</li> <li>请求只能从客户端开始。客户端不可以接收除响应以外的指令。</li> <li>请求/响应首部未经压缩就发送。首部信息越多延迟越大。</li> <li>发送冗长的首部。每次互相发送的的相同首部造成的浪费较多。</li> <li>可任意选择数据压缩格式。非强制压缩发送。</li></ul> <h3 id="消除http瓶颈的spdy"><a href="#消除http瓶颈的spdy" class="header-anchor">#</a> 消除HTTP瓶颈的SPDY</h3> <p>开发目标：解决HTTP的性能瓶颈，缩短Web页面的加载时间。
（50%）</p> <p>SPDY没有完全改写HTTP协议，而是在TCP/IP的应用层与运输层之间通过新加会话层的形式运作。同时，考虑到安全性问题，sPDY规定通信中使用SSL。</p> <p>使用SPDY之后，HTTP协议额外获得以下功能：</p> <ol><li>多路复用流</li> <li>赋予请求优先级</li> <li>压缩HTTP首部</li> <li>推送功能</li> <li>服务器提示功能</li></ol> <h3 id="使用浏览器进行全双工通信的websocket"><a href="#使用浏览器进行全双工通信的websocket" class="header-anchor">#</a> 使用浏览器进行全双工通信的WebSocket</h3> <p><strong>WebSocket，即Web浏览器与Web服务器之间全双工通信标准。</strong></p> <p>一旦Web服务器与客户端之间建立起WebSocket协议进行通信连接，之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、XML、HTML或图片等任意格式的数据。</p> <p><strong>WebSocket协议的主要特点：</strong></p> <ul><li><p>推送功能</p> <p>服务器可以直接发送数据，而不必等待而客户端的请求。</p></li> <li><p>减少通信量</p> <p>只要建立起WebSocket连接，就希望一直保持连接状态。而且WebSocket的首部信息很小，通信量也相应减少。</p></li></ul> <h3 id="http-2-0"><a href="#http-2-0" class="header-anchor">#</a> HTTP/2.0</h3> <p>书中时间是12年，2.0尚未正式发布。</p> <p>目标：改善用户在使用Web时的速度体验。</p> <h3 id="web服务器管理文件的webdav"><a href="#web服务器管理文件的webdav" class="header-anchor">#</a> Web服务器管理文件的WebDAV</h3> <p>基于万维往的分布式创作和版本控制，是一个可对Web服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。作为扩展HTTP/1.1的协议定义在RFC4918。</p> <p>具有创建文件、删除文件、文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能，以及对文件内容修改的版本控制功能。</p> <h2 id="web的攻击技术"><a href="#web的攻击技术" class="header-anchor">#</a> Web的攻击技术</h2> <p>对Web应用的攻击模式有两种：</p> <ul><li>主动攻击：SQL注入攻击和OS命令注入攻击</li> <li>被动攻击：跨站脚本攻击XXS、跨站请求伪造CSRF、HTTP首部注入攻击</li></ul> <p>其他攻击：会话劫持、目录遍历攻击、邮件首部注入攻击、会话固定攻击、点击攻击、DOS攻击</p></div></section> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated: </span> <span class="time">2/5/2022, 1:50:17 PM</span></div></footer> <!----> <div class="comments-wrapper"><!----></div> <ul class="side-bar sub-sidebar-wrapper" style="width:12rem;" data-v-cb1513f6><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#tcp-ip协议族按层次分为以下四层" class="sidebar-link reco-side-tcp-ip协议族按层次分为以下四层" data-v-cb1513f6>TCP/IP协议族按层次分为以下四层</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#确保可靠性的tcp协议" class="sidebar-link reco-side-确保可靠性的tcp协议" data-v-cb1513f6>确保可靠性的TCP协议</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#三次握手" class="sidebar-link reco-side-三次握手" data-v-cb1513f6>三次握手</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#负责域名解析的dns服务" class="sidebar-link reco-side-负责域名解析的dns服务" data-v-cb1513f6>负责域名解析的DNS服务</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#http是不保存状态的协议" class="sidebar-link reco-side-http是不保存状态的协议" data-v-cb1513f6>HTTP是不保存状态的协议</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#http1-1中可使用的方法" class="sidebar-link reco-side-http1-1中可使用的方法" data-v-cb1513f6>HTTP1.1中可使用的方法</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#get-获取资源" class="sidebar-link reco-side-get-获取资源" data-v-cb1513f6>GET：获取资源</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#post-传输实体主题" class="sidebar-link reco-side-post-传输实体主题" data-v-cb1513f6>POST：传输实体主题</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#put-传输文件" class="sidebar-link reco-side-put-传输文件" data-v-cb1513f6>PUT：传输文件</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#head-获得报文首部-获得通信状态" class="sidebar-link reco-side-head-获得报文首部-获得通信状态" data-v-cb1513f6>HEAD：获得报文首部（获得通信状态）</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#delete-删除文件" class="sidebar-link reco-side-delete-删除文件" data-v-cb1513f6>DELETE：删除文件</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#options-询问支持的方法" class="sidebar-link reco-side-options-询问支持的方法" data-v-cb1513f6>OPTIONS：询问支持的方法</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#trace-追踪路径" class="sidebar-link reco-side-trace-追踪路径" data-v-cb1513f6>TRACE：追踪路径</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#connect-要求用隧道协议连接代理" class="sidebar-link reco-side-connect-要求用隧道协议连接代理" data-v-cb1513f6>CONNECT：要求用隧道协议连接代理</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#http状态码" class="sidebar-link reco-side-http状态码" data-v-cb1513f6>HTTP状态码</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#状态码的类别" class="sidebar-link reco-side-状态码的类别" data-v-cb1513f6>状态码的类别</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#_2xx-成功" class="sidebar-link reco-side-_2xx-成功" data-v-cb1513f6>2XX 成功</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#_3xx-重定向" class="sidebar-link reco-side-_3xx-重定向" data-v-cb1513f6>3XX 重定向</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#_4xx-客户端错误" class="sidebar-link reco-side-_4xx-客户端错误" data-v-cb1513f6>4XX 客户端错误</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#_5xx-服务器错误" class="sidebar-link reco-side-_5xx-服务器错误" data-v-cb1513f6>5XX 服务器错误</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#与http协作的web服务器" class="sidebar-link reco-side-与http协作的web服务器" data-v-cb1513f6>与HTTP协作的Web服务器</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#通信数据转发程序-代理、网关、隧道" class="sidebar-link reco-side-通信数据转发程序-代理、网关、隧道" data-v-cb1513f6>通信数据转发程序：代理、网关、隧道</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#http-1-1首部字段一览" class="sidebar-link reco-side-http-1-1首部字段一览" data-v-cb1513f6>HTTP/1.1首部字段一览</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#通用首部字段" class="sidebar-link reco-side-通用首部字段" data-v-cb1513f6>通用首部字段</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#请求首部字段" class="sidebar-link reco-side-请求首部字段" data-v-cb1513f6>请求首部字段</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#响应首部字段" class="sidebar-link reco-side-响应首部字段" data-v-cb1513f6>响应首部字段</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#实体首部字段" class="sidebar-link reco-side-实体首部字段" data-v-cb1513f6>实体首部字段</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#https" class="sidebar-link reco-side-https" data-v-cb1513f6>HTTPS</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#基于http的功能追加协议" class="sidebar-link reco-side-基于http的功能追加协议" data-v-cb1513f6>基于HTTP的功能追加协议</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#基于http的协议" class="sidebar-link reco-side-基于http的协议" data-v-cb1513f6>基于HTTP的协议</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#消除http瓶颈的spdy" class="sidebar-link reco-side-消除http瓶颈的spdy" data-v-cb1513f6>消除HTTP瓶颈的SPDY</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#使用浏览器进行全双工通信的websocket" class="sidebar-link reco-side-使用浏览器进行全双工通信的websocket" data-v-cb1513f6>使用浏览器进行全双工通信的WebSocket</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#http-2-0" class="sidebar-link reco-side-http-2-0" data-v-cb1513f6>HTTP/2.0</a></li><li class="level-3" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#web服务器管理文件的webdav" class="sidebar-link reco-side-web服务器管理文件的webdav" data-v-cb1513f6>Web服务器管理文件的WebDAV</a></li><li class="level-2" data-v-cb1513f6><a href="/blog/blogs/Network/httptj.html#web的攻击技术" class="sidebar-link reco-side-web的攻击技术" data-v-cb1513f6>Web的攻击技术</a></li></ul></main> <!----></div></div></div></div><div class="global-ui"><div class="back-to-ceiling" style="right:1rem;bottom:6rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;display:none;" data-v-c6073ba8 data-v-c6073ba8><svg t="1574745035067" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5404" class="icon" data-v-c6073ba8><path d="M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z" p-id="5405" data-v-c6073ba8></path><path d="M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z" p-id="5406" data-v-c6073ba8></path></svg></div></div></div>
    <script src="/blog/assets/js/app.2c497286.js" defer></script><script src="/blog/assets/js/3.1e41fb2d.js" defer></script><script src="/blog/assets/js/1.a1bf8e1e.js" defer></script><script src="/blog/assets/js/26.1881faa9.js" defer></script>
  </body>
</html>
